Graficacion en ggplot2-ploty

Autor/a

Irina Pérez

Introcucción

Este documento contiene visualización de datos elaborado con lo paquetes ggplot2 y plotly de R.

carga de paquetes

Código
library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.2     ✔ readr     2.1.4
✔ forcats   1.0.0     ✔ stringr   1.5.0
✔ ggplot2   3.4.2     ✔ tibble    3.2.1
✔ lubridate 1.9.2     ✔ tidyr     1.3.0
✔ purrr     1.0.1     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
Código
library(plotly)

Attaching package: 'plotly'

The following object is masked from 'package:ggplot2':

    last_plot

The following object is masked from 'package:stats':

    filter

The following object is masked from 'package:graphics':

    layout
Código
library(DT)
library(gapminder)
library(ggthemes)

Carga de Datos

mpg

Código
# Despliegue de los datos mpg
 mpg |>
  datatable(
    options = list(
      pageLength = 5,
      language = list(url = '//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json')
    )
  )

diamonds

Código
# Carga de datos de diamonds
diamonds |>
  datatable(
    options = list(
      pageLength = 5,
      language = list(url = '//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json')
    )
  )

gapminder

Código
# Carga de datos de gapminder
gapminder |>
  filter(year == 2007) |>
  datatable(
    options = list(
      pageLength = 5,
      language = list(url = '//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json')
    )
  )

Covid

Código
# Carga del archivo CSV de entrada en un dataframe
# con la función read_delim() de readr
covid_general <-
  read_delim(
    file = "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2023-i/main/datos/ministerio-salud/covid/05_30_22_CSV_GENERAL.csv",
    col_select = c(
      "FECHA",
      "positivos",
      "activos",
      "RECUPERADOS",
      "fallecidos",
      "nue_posi",
      "nue_falleci",
      "salon",
      "UCI"
    )
  )

# Cambio de nombre de columnas
covid_general <-
  covid_general |>
  rename(
    fecha = FECHA,
    recuperados = RECUPERADOS,
    nuevos_positivos = nue_posi,
    nuevos_fallecidos = nue_falleci,
    uci = UCI
  )

# Cambio de tipo de datos de la columna fecha, de str a date
covid_general <-
  covid_general |>
  mutate(fecha = as.Date(fecha, format = "%d/%m/%Y"))

# Tabla de datos de COVID generales
covid_general |>
  datatable(
    options = list(
      pageLength = 5,
      language = list(url = '//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json')
    )
  )

delitos

Código
# Carga de datos
delitos_2022 <-
  read_delim(
    file = "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2023-i/main/datos/oij/estadisticas-policiales/estadisticaspoliciales2022.csv"
  )

# Tabla de datos
delitos_2022 |>
  datatable(
    options = list(
      pageLength = 5,
      language = list(url = '//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json')
    )
  )

Conceptos basicos de graficacion

todo gráfico rn ggplot2 tiene 3 componentes

  1. Datos (datafram).
  2. un mapeo (asociacion) de las variabls el conjunto de datos on las propiedades visuales del grafico: ej x, eje y, tamaño, forma, color, etc. (funvion aes())
  3. una o vari capas de geometrias: puntos, barra, caja, histogramas, etc. (geom_point(), deo_box(), geom_smooth())
Código
# forma basica
ggplot(data = mpg) + 
  geom_point(mapping = aes(x = displ, y = hwy))

Código
# forma con pipes
mpg |>
  ggplot(aes(x = displ, y = hwy)) +
        geom_point()

Código
# Variables adiciononales
mpg |>
  ggplot(aes(x = displ, y = hwy, color = class)) +
        geom_point()

Código
# Variables adiciononales-forma
mpg |>
  ggplot(aes(x = displ, y = hwy, shape = class)) +
        geom_point()

Código
# Gráfico de dispersión de cilindrada vs millas por galón en autopista
# con formas y colores correspondientes al tipo de automóvil
mpg |>
  ggplot(aes(x = displ, y = hwy, shape = class, color = class)) +
  geom_point() +
  scale_shape_manual(values = c(0, 1, 2, 3, 4, 5, 6)) +
  scale_color_manual(values = c("red", "blue", "green", "purple", "orange", "brown", "pink"))

Código
# Gráfico de dispersión de rendimiento en autopista vs rendimiento en ciudad
# con tamaño de puntos correspondiente a la cilindrada
mpg |>
  ggplot(aes(x = hwy, y = cty, size = displ)) +
  geom_point()

Código
# Gráfico de dispersión de cilindrada vs millas por galón en autopista
# + curva de tendencia
mpg |>
  ggplot(aes(x = displ, y = hwy)) +
  geom_point() +
  geom_smooth()

Código
# Gráfico de dispersión de cilindrada vs millas por galón en autopista
# coloreado por tipo de tracción
# + curva de tendencia
mpg |>
  ggplot(aes(x = displ, y = hwy, color = drv)) +
  geom_point() +
  geom_smooth()

capas adicionales

Código
mpg |>
  ggplot(aes(x = displ, y = hwy)) +
  geom_point() +
  geom_smooth(method = "lm")

Código
mpg |>
  ggplot(aes(x = displ, y = hwy, color = drv)) +
  geom_point() +
  geom_smooth()

paneles(facet)

mpg |>
  ggplot(aes(x = displ, y = hwy , shape = class)) +
  geom_point() +
  facet_wrap(~ class, ncol = 2)
Warning: The shape palette can deal with a maximum of 6 discrete values because
more than 6 becomes difficult to discriminate; you have 7. Consider
specifying shapes manually if you must have them.
Warning: Removed 62 rows containing missing values (`geom_point()`).

Código
mpg |>
  ggplot(aes(x = displ, y = hwy)) +
  geom_point() +
  facet_grid(class ~ drv)

estilos

Código
mpg |>
  ggplot(aes(x = displ, y = hwy, color = drv)) +
  geom_point() +
  geom_smooth() +
  ggtitle("Cilindrada vs rendimiento en autopista") +
  xlab("Cilindrada (l)") +
  ylab("Rendimiento en autopista (mpg)") +
  labs(subtitle = "Datos de 38 modelos de automóviles", 
       caption = "Fuente: EPA",
       color = "Tipo de tracción") +
  theme_economist()